//package south;
//
//import java.util.Collection;
//import java.util.HashSet;
//import java.util.Set;
//
////import org.apache.shiro.session.Session;
////
////import com.ucmed.common.utils.LoggerUtils;
////import com.ucmed.common.utils.SerializeUtil;
//
//import redis.clients.jedis.Jedis;
//import redis.clients.jedis.JedisPool;
//import redis.clients.jedis.exceptions.JedisConnectionException;
//
///**
// * @ClassName JedisManager
// * @Description Jedis manager.
// * @author piaolinzhi
// * @date 2016年12月14日 下午3:16:55
// */
//public class JedisManager {
//
//    private JedisPool jedisPool;
//
//    public JedisPool getJedisPool() {
//        return jedisPool;
//    }
//
//    public void setJedisPool(JedisPool jedisPool) {
//        this.jedisPool = jedisPool;
//    }
//
//    /**
//     * @Description 获得可操作的 redis 实例
//     * @author piaolinzhi
//     * @date 2016年12月14日 下午3:19:28
//     * @return 可操作的 redis 实例
//     */
//    public Jedis getJedis() {
//        Jedis jedis = null;
//        try {
//            jedis = getJedisPool().getResource();
//        } catch(Exception e) {
//            throw new JedisConnectionException(e);
//        }
//        return jedis;
//    }
//
//    /**
//     * @Description 返回 jedis 资源
//     * @author piaolinzhi
//     * @date 2016年12月14日 下午3:23:59
//     * @param jedis jedis 实例
//     * @param isBroken 这个没有用到
//     */
//    public void returnResource(Jedis jedis, boolean isBroken) {
//        if(jedis == null) {
//            return;
//        }
//        jedis.close();
//    }
//
//    /**
//     * @Description 根据key值返回 value值
//     * @author piaolinzhi
//     * @date 2016年12月14日 下午3:25:35
//     * @param dbIndex 数据存储的 DB 索引
//     * @param key 键值
//     * @return 键值对应的值
//     * @throws Exception e
//     */
//    public byte[] getValueByKey(int dbIndex, byte[] key) throws Exception {
//        Jedis jedis = null;
//        byte[] result = null;
//        boolean isBroken = false;
//        try {
//            jedis = getJedis();
//            jedis.select(dbIndex);
//            result = jedis.get(key);
//        } catch(Exception e) {
//            isBroken = true;
//            throw e;
//        } finally {
//            returnResource(jedis, isBroken);
//        }
//        return result;
//    }
//
//    public void deleteByKey(int dbIndex, byte[] key) throws Exception {
//        Jedis jedis = null;
//        boolean isBroken = false;
//        try {
//            jedis = getJedis();
//            jedis.select(dbIndex);
//            Long result = jedis.del(key);
//            LoggerUtils.fmtDebug(getClass(), "删除Session结果：%s", result);
//        } catch(Exception e) {
//            isBroken = true;
//            throw e;
//        } finally {
//            returnResource(jedis, isBroken);
//        }
//    }
//
//    public void saveValueByKey(int dbIndex, byte[] key, byte[] value,
//            int expireTime) throws Exception {
//        Jedis jedis = null;
//        boolean isBroken = false;
//        try {
//            jedis = getJedis();
//            jedis.select(dbIndex);
//            jedis.set(key, value);
//            if(expireTime > 0)
//                jedis.expire(key, expireTime);
//        } catch(Exception e) {
//            isBroken = true;
//            throw e;
//        } finally {
//            returnResource(jedis, isBroken);
//        }
//    }
//
//    /**
//     * 获取所有Session
//     * @param dbIndex
//     * @param redisShiroSession
//     * @return
//     * @throws Exception
//     */
//    @SuppressWarnings("unchecked")
//    public Collection<Session> AllSession(int dbIndex,
//            String redisShiroSession) throws Exception {
//        Jedis jedis = null;
//        boolean isBroken = false;
//        Set<Session> sessions = new HashSet<Session>();
//        try {
//            jedis = getJedis();
//            jedis.select(dbIndex);
//
//            Set<byte[]> byteKeys = jedis
//                    .keys((JedisShiroSessionRepository.REDIS_SHIRO_ALL)
//                            .getBytes());
//            if(byteKeys != null && byteKeys.size() > 0) {
//                for(byte[] bs : byteKeys) {
//                    Session obj = SerializeUtil.deserialize(jedis.get(bs),
//                            Session.class);
//                    if(obj instanceof Session) {
//                        sessions.add(obj);
//                    }
//                }
//            }
//        } catch(Exception e) {
//            isBroken = true;
//            throw e;
//        } finally {
//            returnResource(jedis, isBroken);
//        }
//        return sessions;
//    }
//}
